package dto

// ListProductReq 商品列表查询请求
type ListProductReq struct {
	TagId        string   `json:"tag_id"` // 标签ID
	TagIds       []string `json:"tag_ids"`
	CategoryId   string   `json:"category_id"`                               // 分类ID
	DeliveryType string   `json:"delivery_type"`                             // 配送方式
	Keyword      string   `json:"keyword"`                                   // 搜索关键词
	Page         int      `json:"page" binding:"required,min=1"`             // 页码
	PageSize     int      `json:"page_size" binding:"required,min=1,max=50"` // 每页大小
}

// ProductDetailReq 商品详情请求
type ProductDetailReq struct {
	Id int64 `form:"id" binding:"required"` // 商品ID
}

// ProductDetailResp 商品详情响应
type ProductDetailResp struct {
	Id            string      `json:"product_id"`     // 商品ID
	Title         string      `json:"title"`          // 商品标题
	Cover         string      `json:"cover"`          // 商品主图
	DetailImages  []string    `json:"detail_images"`  // 商品详情图片
	BannerImages  []string    `json:"banner_images"`  // 商品轮播图
	Price         int64       `json:"price"`          // 商品价格(分)
	OriginPrice   int64       `json:"origin_price"`   // 商品原价(分)
	Stock         int         `json:"stock"`          // 总库存
	SalesVolume   int         `json:"sales_volume"`   // 总销量
	Tags          []string    `json:"tags"`           // 商品标签
	Models        []*Models   `json:"models"`         // 商品模块
	Categorys     []string    `json:"categorys"`      // 商品分类
	Unit          string      `json:"unit"`           // 商品单位
	Weight        int         `json:"weight"`         // 商品重量(克)
	SpecInfo      []*SpecInfo `json:"spec_info"`      // 规格信息
	SkuList       []*SkuInfo  `json:"sku_list"`       // SKU列表
	DeliveryTypes []string    `json:"delivery_types"` // 配送方式
	Description   string      `json:"description"`    // 商品描述
	Notice        string      `json:"notice"`         // 购买须知
	IsRecommend   int         `json:"is_recommend"`   // 是否推荐
	IsNew         int         `json:"is_new"`         // 是否新品
	IsHot         int         `json:"is_hot"`         // 是否热销
	MinBuyNum     int         `json:"min_buy_num"`    // 最小购买数量
	MaxBuyNum     int         `json:"max_buy_num"`    // 最大购买数量，0不限制
}

type Models struct {
	Name  string `json:"name"`
	Color string `json:"color"`
}

// ProductItem 商品列表项
type ProductItem struct {
	Id          string     `json:"product_id"`   // 商品ID
	Title       string     `json:"title"`        // 商品名称
	Cover       string     `json:"cover"`        // 商品图片
	Price       int64      `json:"price"`        // 商品优惠价(分)
	OriginPrice int64      `json:"origin_price"` // 商品原价(分)
	IsRecommend int        `json:"is_recommend"` // 是否推荐
	IsNew       int        `json:"is_new"`       // 是否新品
	IsHot       int        `json:"is_hot"`       // 是否热销
	MinBuyNum   int        `json:"min_buy_num"`  // 最小购买数量
	MaxBuyNum   int        `json:"max_buy_num"`  // 最大购买数量
	SpecInfo    []SpecInfo `json:"spec_info"`    // 规格信息
	SalesVolume int        `json:"sales_volume"` // 销量
	Stock       int        `json:"stock"`        // 库存
	SkuList     []*SkuInfo `json:"sku_list"`     // SKU列表
}

// SkuInfo SKU信息
type SkuInfo struct {
	SkuId       int64    `json:"sku_id"`       // SKU ID
	SpecValues  []string `json:"spec_values"`  // 规格值列表
	Price       int64    `json:"price"`        // 价格(分)
	OriginPrice int64    `json:"origin_price"` // 原价(分)
	Stock       int      `json:"stock"`        // 库存
	SalesVolume int      `json:"sales_volume"` // 销量
}

// SpecInfo 规格信息
type SpecInfo struct {
	SpecId    int64  `json:"spec_id"`    // 规格ID
	SpecName  string `json:"spec_name"`  // 规格名称
	SpecPrice int    `json:"spec_price"` // 规格值列表
}

// ListProductResp 商品列表响应
type ListProductResp struct {
	Total    int64          `json:"total"`     // 总数
	List     []*ProductItem `json:"list"`      // 商品列表
	Page     int            `json:"page"`      // 当前页码
	PageSize int            `json:"page_size"` // 每页大小
}

// ListProductModelPageResp 商品列表响应
type ListProductModelPageResp struct {
	ModelList []*ProductModel           `json:"tag_list"`
	List      map[string][]*ProductItem `json:"list"`      // 商品列表
	Total     int64                     `json:"total"`     // 总数
	Page      int                       `json:"page"`      // 当前页码
	PageSize  int                       `json:"page_size"` // 每页大小
}
